"Örnek Data" sayfasında Papara nın test verileri yer almaktadır. . Dosyanın adı paparaornekdata.xlsxdir.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
import warnings
warnings.filterwarnings('ignore')
Toplam İşlem Sayısı: Her kullanıcının yaptığı işlemlerin toplam sayısı ölçülebilir. Bu, kullanıcının aktifliği hakkında bilgi verir.
İşlem Başına Ortalama Tutarsızlık: Her kullanıcının işlem başına ortalama tutarsızlığı ölçülebilir. Bu, kullanıcının para işlemlerinde ne kadar hata yaptığını veya ne kadar dikkatli olduğunu gösterir.
İptal Oranı: Kullanıcının yaptığı işlemlerin iptal oranı ölçülebilir. Bu, kullanıcının işlemlerini ne kadar dikkatli yaptığını gösterir. Ortalama İşlem Tutarı: Kullanıcının yaptığı işlemlerin ortalama tutarı ölçülebilir. Bu, kullanıcının ne kadar büyük işlemler yaptığını veya ne kadar aktif olduğunu gösterir.
İşlem Tipine Göre Dağılım: Kullanıcının yaptığı işlemlerin türüne göre dağılımı ölçülebilir. Bu, kullanıcının hangi tür işlemleri yaptığına bağlı olarak hangi para birimleri veya işlem tipleri hakkında bilgi verir.
Bu KPI'ları belirlemek için Python üzerinden bir data frame oluşturarak görselleme ile ilgili bir çıktı sağlamamız işe yarayacaktır. Bu çalışmam bu kütüphaneleri içeriyor. İleride bir predictive çalışması yapılması önemli bir fayda sağlamamızda işe yarayacaktır.
Bu laboratuvar için aşağıdaki kütüphaneleri kullanacağız:
pandasPandas - Bu kütüphane, veri çerçevesini 2D dizi biçiminde yüklemeye yardımcı olur ve analiz görevlerini tek seferde gerçekleştirmek için birden fazla işleve sahiptir.
Numpy - Numpy dizileri çok hızlıdır ve büyük hesaplamaları çok kısa sürede gerçekleştirebilir.
Matplotlib/Seaborn - Bu kütüphane görselleştirmeler çizmek için kullanılır.
### BEGIN SOLUTION
data = pd.read_excel("/Users/mertdil/Documents/Papara_Case/paparaornekdata.xlsx")
datamızda bulunan tabloları anlamlandırmak için data frame olarak açıyoruz
data.head()
| Islem_Id | Kullanici_Id | Iptal_Durum | Islem_Tutari | İslem_Ucreti | Para_Birimi_Id | Islem_Tipi | Islem_Tarihi | Para_Transfer_Tip | Papara_Kart_Id | Ulke_Kodu | Kullanici_Tipi | Kullanici_Dogum_Tarihi | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 133105 | 004dd4de-84e0-4491-b164-bb496fd7120d | 0 | 19.0 | 0.0 | 0 | 6 | 2019-07-01 13:57:05.007 | NaN | NaN | NaN | 0.0 | 9999-12-31 23:59:59 |
| 1 | 133106 | 004dd4de-84e0-4491-b164-bb496fd7120d | 0 | 24.0 | 0.0 | 0 | 6 | 2019-07-01 14:02:15.000 | NaN | NaN | NaN | 0.0 | 9999-12-31 23:59:59 |
| 2 | 133441 | 004dd4de-84e0-4491-b164-bb496fd7120d | 0 | 297.0 | 0.0 | 0 | 6 | 2019-07-18 15:17:41.067 | NaN | NaN | NaN | 0.0 | 9999-12-31 23:59:59 |
| 3 | 133456 | 004dd4de-84e0-4491-b164-bb496fd7120d | 0 | 742.5 | 0.0 | 0 | 6 | 2019-07-19 13:55:01.000 | NaN | NaN | NaN | 0.0 | 9999-12-31 23:59:59 |
| 4 | 133457 | 004dd4de-84e0-4491-b164-bb496fd7120d | 0 | 495.0 | 0.0 | 0 | 6 | 2019-07-19 13:59:00.000 | NaN | NaN | NaN | 0.0 | 9999-12-31 23:59:59 |
data.shape
(11371, 13)
Buradan, 11371 veri satırı olduğunu ve her satır için 13 farklı özelliğe veya sütuna sahip olduğumuzu öğrendik.
df=data
data.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 11371 entries, 0 to 11370 Data columns (total 13 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Islem_Id 11371 non-null int64 1 Kullanici_Id 11371 non-null object 2 Iptal_Durum 11371 non-null int64 3 Islem_Tutari 11371 non-null float64 4 İslem_Ucreti 11371 non-null float64 5 Para_Birimi_Id 11371 non-null int64 6 Islem_Tipi 11371 non-null int64 7 Islem_Tarihi 11371 non-null datetime64[ns] 8 Para_Transfer_Tip 5054 non-null float64 9 Papara_Kart_Id 2492 non-null float64 10 Ulke_Kodu 1291 non-null object 11 Kullanici_Tipi 11370 non-null float64 12 Kullanici_Dogum_Tarihi 11370 non-null object dtypes: datetime64[ns](1), float64(5), int64(4), object(3) memory usage: 1.1+ MB
Yukarıdaki çıktıya göre, 11371 girdimiz veya satırımız ve 12 özelliğimiz var. "Boş Olmayan Sayısı" sütunu boş olmayan girişlerin sayısını gösterir. Sayı 11371 ise, söz konusu özellik için eksik değer yoktur. 'Islem_Tutarı' hedefimiz ya da yanıt değişkenimizdir ve özelliklerin geri kalanı tahmin değişkenlerimizdir.
'describe()` fonksiyonu tüm sayısal değerler hakkında istatistiksel bilgi sağlayacaktır.
data.describe()
| Islem_Id | Iptal_Durum | Islem_Tutari | İslem_Ucreti | Para_Birimi_Id | Islem_Tipi | Para_Transfer_Tip | Papara_Kart_Id | Kullanici_Tipi | |
|---|---|---|---|---|---|---|---|---|---|
| count | 11371.000000 | 11371.000000 | 11371.000000 | 11371.000000 | 11371.000000 | 11371.000000 | 5054.000000 | 2492.000000 | 11370.000000 |
| mean | 150540.538211 | 0.061296 | -10.368609 | -0.327102 | 0.026031 | 7.363468 | 0.501187 | 1217.662520 | 1.389974 |
| std | 20211.537379 | 0.239884 | 6065.567386 | 5.543387 | 0.226692 | 3.668555 | 0.500048 | 2115.087932 | 0.786063 |
| min | 106047.000000 | 0.000000 | -197975.570000 | -340.000000 | 0.000000 | 0.000000 | 0.000000 | 181.000000 | 0.000000 |
| 25% | 133241.500000 | 0.000000 | -9.000000 | 0.000000 | 0.000000 | 7.000000 | 0.000000 | 241.000000 | 1.000000 |
| 50% | 156065.000000 | 0.000000 | -1.000000 | 0.000000 | 0.000000 | 7.000000 | 1.000000 | 1193.000000 | 2.000000 |
| 75% | 169557.500000 | 0.000000 | 8.900000 | 0.000000 | 0.000000 | 9.000000 | 1.000000 | 1484.000000 | 2.000000 |
| max | 172797.000000 | 1.000000 | 200000.000000 | 19.520000 | 3.000000 | 17.000000 | 1.000000 | 12797.000000 | 2.000000 |
# Veri setindeki örneklerin sayısı
print("Veri setindeki örneklerin sayısı:",df.shape[0])
# Veri setindeki benzersiz kullanıcı sayısı
print("Veri setindeki benzersiz kullanıcı sayısı:",df['Kullanici_Id'].nunique())
# Veri setindeki iptal edilen işlemlerin yüzdesi
print("Veri setindeki iptal edilen işlemlerin yüzdesi:",df['Iptal_Durum'].mean())
Veri setindeki örneklerin sayısı: 11371 Veri setindeki benzersiz kullanıcı sayısı: 227 Veri setindeki iptal edilen işlemlerin yüzdesi: 0.061296280010553164
#Verinin temel özelliklerini inceleyin: Veride kaç adet satır ve sütun var? Hangi sütunlar veri tipi açısından sorunlu görünüyor?
print(df.shape)
print(df.dtypes)
(11371, 13) Islem_Id int64 Kullanici_Id object Iptal_Durum int64 Islem_Tutari float64 İslem_Ucreti float64 Para_Birimi_Id int64 Islem_Tipi int64 Islem_Tarihi datetime64[ns] Para_Transfer_Tip float64 Papara_Kart_Id float64 Ulke_Kodu object Kullanici_Tipi float64 Kullanici_Dogum_Tarihi object dtype: object
Burda verilerin bulunduğu çeşitleri görüyoruz
data.isnull().sum()
Islem_Id 0 Kullanici_Id 0 Iptal_Durum 0 Islem_Tutari 0 İslem_Ucreti 0 Para_Birimi_Id 0 Islem_Tipi 0 Islem_Tarihi 0 Para_Transfer_Tip 6317 Papara_Kart_Id 8879 Ulke_Kodu 10080 Kullanici_Tipi 1 Kullanici_Dogum_Tarihi 1 dtype: int64
Burda verimizde bulunan nan değerlerin sayısını elde ediyoruz
data = data.fillna(method='ffill')
Bu işlemde verilerin doldurma işlemini gerçekleştiriyoruz
data.isnull().sum()
Islem_Id 0 Kullanici_Id 0 Iptal_Durum 0 Islem_Tutari 0 İslem_Ucreti 0 Para_Birimi_Id 0 Islem_Tipi 0 Islem_Tarihi 0 Para_Transfer_Tip 10 Papara_Kart_Id 30 Ulke_Kodu 30 Kullanici_Tipi 0 Kullanici_Dogum_Tarihi 0 dtype: int64
print("Para_Transfer_Tip unique değişken isimleri:",data['Para_Transfer_Tip'].unique())
print("Papara_Kart_Id unique değişken isimleri:",data['Papara_Kart_Id'].unique())
print("Ulke_Kodu unique değişken isimleri:",data['Ulke_Kodu'].unique())
Para_Transfer_Tip unique değişken isimleri: [nan 0. 1.] Papara_Kart_Id unique değişken isimleri: [ nan 1514. 241. 11698. 11694. 11685. 12783. 11699. 12784. 12781. 12719. 12785. 1195. 1188. 1272. 1573. 11622. 1591. 668. 673. 660. 398. 582. 583. 186. 1484. 579. 1577. 1578. 1579. 1580. 1581. 1582. 391. 1554. 600. 1476. 504. 12718. 1334. 387. 1193. 12795. 12796. 12797. 1491. 11607. 1110. 1111. 1606. 1607. 1608. 1616. 1629. 594. 382. 332. 1222. 1483. 674. 215. 1120. 1119. 1479. 663. 1489. 1255. 1499. 11606. 679. 11604. 688. 12738. 12737. 1243. 1477. 1548. 490. 491. 578. 1268. 1315. 690. 1194. 1261. 1376. 1152. 512. 503. 1487. 1572. 1437. 1518. 564. 509. 1630. 1626. 1627. 1496. 12763. 12764. 1281. 1282. 11712. 1154. 1155. 1490. 1231. 670. 1241. 1230. 664. 666. 12793. 1492. 560. 567. 1515. 1486. 1546. 1520. 181.] Ulke_Kodu unique değişken isimleri: [nan 'TR' 'le' 'US' 'GB' 945 89 45 'T' 'MO' 'LUX' 'V' 'tle' 'UL' 'GR']
bu işlemde tekrar doldurma işleminden sonra verilerin unique bilgilerini görüyoruz
# Müşteri iptal oranı
iptal_oranlari = df["Iptal_Durum"].value_counts(normalize=True)
print("Iptal oranlari:", iptal_oranlari)
Iptal oranlari: 0 0.938704 1 0.061296 Name: Iptal_Durum, dtype: float64
# İptal oranını zamanla değişimini göster
df["Islem_Tarihi"] = pd.to_datetime(df["Islem_Tarihi"])
df["Ay"] = df["Islem_Tarihi"].dt.month
df.groupby("Ay")["Iptal_Durum"].mean().plot()
plt.xlabel('İşlem Ayları')
plt.ylabel('İşlem Sayısı Ortalama Değer')
plt.title("İptal oranını zamanla değişimini göster")
plt.show()
İptal oranları yaz aylarında düşüp sonbahar aylarında yükselişe geçmiştir buna yönelik bir yönlendirme kampanyalar bilgilendirmeler sonbahar aylarında yapılıp promosyanlarla bu kullanıcıların churn durumu engellenebilir.
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
fig = px.histogram(df, x="Islem_Ayi", nbins=50)
fig.show()
"1., 3. ve 11. ayda gerçekleşen işlem sayısı hayli yüksektir. çözüm önerileri: Verileri daha ayrıntılı bir şekilde analiz ederek, bu aylarda hangi işlemlerin daha sık gerçekleştiğini belirleyebilirsiniz.
Örneğin, 1. ayda çok sayıda yeni kullanıcının işlem yaptığı fark edilmiş olabilir. Bu bilgi, daha etkili pazarlama stratejileri geliştirmenize yardımcı olabilir.
Bu yüksek işlem sayısının kaynaklarını daha verimli kullanmak için işlem hacmini yönetmek adına planlama yapabilirsiniz. Örneğin, bu aylarda yoğunluk yaşanacağı öngörülerek, daha fazla personel tahsis edilebilir veya daha fazla stok tedarik edilebilir.
Bu verileri diğer yılların aynı ayları ile karşılaştırarak trendleri belirleyebilirsiniz. Bu, gelecekte benzer dönemler için öngörüler yapmanıza ve bu dönemlerde müşteri memnuniyetini en üst düzeye çıkaracak stratejileri oluşturmanıza yardımcı olabilir."
fig = px.histogram(df, x="Islem_Saati", nbins=50)
fig.show()
En yüksek işlem saaatleri öğleden sonra akşama yöneliktir bu işlem hacmine yönelik bir çalışma yapılmasında yarar vardır.
fig = px.histogram(df, x="Islem_Tipi",y="Islem_Tutari",nbins=50)
fig.show()
# Hangi ülkelerden işlem yapılıyor?
ulkeler = df["Ulke_Kodu"].unique()
print("İşlem yapılan ülkeler:", ulkeler)
İşlem yapılan ülkeler: [nan 'TR' 'le' 'US' 'GB' 945 89 45 'T' 'MO' 'LUX' 'V' 'tle' 'UL' 'GR']
# İşlem türlerinin dağılımı
islem_tipleri = df["Islem_Tipi"].unique()
print("Kullanılan işlem tipleri:", islem_tipleri)
Kullanılan işlem tipleri: [ 6 9 7 12 2 13 11 14 17 0 1 8 15 3]
# İşlem tutarları ve ücretleri arasındaki ilişkiyi göster
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x="Islem_Tutari", y="İslem_Ucreti", data=df)
plt.show()
Bu grafik, işlem ücreti ile işlem tutarı arasındaki ilişkiyi görselleştirir. Eğer işlem tutarı arttıkça, işlem ücretinin de arttığını görebiliriz.
Eksiye yönelim işlem tuarları verilerinin eksi olarak yönlendirmesi ile olmuştur.
# KPI'ları hesaplayın ve görselleştirin
# Örnek olarak, toplam işlem tutarını ve işlem sayısını hesaplayabilirsiniz
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
total_transaction_amount = data['Islem_Tutari'].sum()
transaction_count = data.shape[0]
print("Toplam işlem tutarı: ", total_transaction_amount)
print("İşlem sayısı: ", transaction_count)
# Verileri görselleştirin
# Örnek olarak, işlem tutarları için bir histogram çizdirebilirsiniz
sns.barplot(data['Islem_Tutari'])
plt.title('İşlem Tutarları')
plt.xlabel('Tutar')
plt.ylabel('İşlem Sayısı')
plt.show()
Toplam işlem tutarı: -117901.45004836004 İşlem sayısı: 11371
#Hangi para birimleri kullanılmış ve bunların müşteri sayısı nedir
para_birimleri = data['Para_Birimi_Id'].unique()
para_birimleri_musteri_sayisi = []
for para_birimi in para_birimleri:
musteri_sayisi = len(data[data['Para_Birimi_Id'] == para_birimi]['Kullanici_Id'].unique())
para_birimleri_musteri_sayisi.append((para_birimi, musteri_sayisi))
para_birimleri_musteri_sayisi = sorted(para_birimleri_musteri_sayisi, key=lambda x: x[1], reverse=True)
x = [str(pb[0]) for pb in para_birimleri_musteri_sayisi]
y = [pb[1] for pb in para_birimleri_musteri_sayisi]
plt.bar(x, y)
plt.xticks(rotation=90)
plt.xlabel('Para Birimleri')
plt.ylabel('Müşteri Sayısı')
plt.title('Hangi para birimleri kullanılmış ve bunların müşteri sayısı nedir?')
plt.show()
En çok müşterimiz 0 para birimi id si ile yapılmış diğer birimlerin toplamından daha yüksek olduğu için bu para birimindeki işlemlere ve kampanayalara öncelik vermek işimize yarayacaktır.
#Hangi ülkelerdeki kullanıcılar daha fazla işlem yapmıştır?
transactions_by_country = data.groupby('Ulke_Kodu')['Islem_Id'].count()
transactions_by_country.plot(kind='bar')
plt.xlabel('Ulke_Kodu')
plt.ylabel('İşlem Sayısı ')
plt.title("Hangi ülkelerdeki kullanıcılar daha fazla işlem yapmıştır?")
plt.show()
print(data['Ulke_Kodu'].unique())
[nan 'TR' 'le' 'US' 'GB' 945 89 45 'T' 'MO' 'LUX' 'V' 'tle' 'UL' 'GR']
En çok işlemin yapıldığı ülkenin "TR" kodu olmasının yanı sıra "tle" kodlu ve "le" kodlu ülkedeki işlemleri göz ardı etmemek bu tarafta bir yönlendirme yapmak gerekiyor. Bu işlemlerin hangi konuda dağılım gösterdiği analizlenip o tarafta kampanya ve yönlendirmeler artılması mantıklı bir çözümdür
#Hangi ülkelerdeki kullanıcılar daha fazla işlem yapmıştır?
transactions_by_country = data.groupby('Kullanici_Tipi')['Islem_Id'].count()
transactions_by_country.plot(kind='bar')
plt.xlabel('Kullanıcı_Tipi')
plt.ylabel('İşlem Sayısı ')
plt.title("Hangi tipteki kullanıcılar daha fazla işlem yapmıştır?")
plt.show()
En fazla işlem yapan kullanıcalar "2.0" olmasının yanı sıra "0.0" ve "1.0" kullanıcıları da öneme sahiptir.
#Hangi tarihlerde işlemler iptal edilmiştir ve iptal oranı nedir?
cancelled_transactions = data.loc[data['Iptal_Durum'] == 1]
cancelled_transactions_by_date = cancelled_transactions.groupby('Islem_Tarihi')['Islem_Id'].count() / data.groupby('Islem_Tarihi')['Islem_Id'].count()
plt.title("Hangi tarihlerde işlemler iptal edilmiştir ve iptal oranı nedir?")
cancelled_transactions_by_date.plot(kind='line')
plt.show()
İptal oranlarında en düşük dönemi 2019_09 ayında gerçekleştirmiştir.Geriye yönelik bu işlemin nedeni çözümlenmesi geleceğe yönelik plan alınmasını önem kazanıcaktır.
#Hangi kullanıcılar daha fazla işlem yapmıştır ve bu işlemler hangi para birimlerinde gerçekleştirilmiştir?
top_users = data.groupby('Kullanici_Id')['Islem_Id'].count().nlargest(10)
transactions_by_user = data.loc[data['Kullanici_Id'].isin(top_users.index)].groupby(['Kullanici_Id', 'Para_Birimi_Id'])['Islem_Id'].count()
transactions_by_user.unstack().plot(kind='bar', stacked=True)
plt.title('Hangi kullanıcılar daha fazla işlem yapmıştır ve bu işlemler hangi para birimlerinde gerçekleştirilmiştir?')
plt.show()
#Hangi kullanıcılar daha fazla işlem yapmıştır ve bu işlemler hangi kullanıcı tiplerindedir
top_users = data.groupby('Kullanici_Id')['Islem_Id'].count().nlargest(10)
transactions_by_user = data.loc[data['Kullanici_Id'].isin(top_users.index)].groupby(['Kullanici_Id', 'Kullanici_Tipi'])['Islem_Id'].count()
transactions_by_user.unstack().plot(kind='bar', stacked=True)
plt.xlabel('Kullanıcı_ID')
plt.ylabel('İşlem Sayısı ')
plt.title("Hangi kullanıcılar daha fazla işlem yapmıştır ve bu işlemler hangi kullanıcı tiplerindedir")
plt.show()
#En yüksek tutarlı işlem yapan 10 kullanıcı
top_users = data.groupby('Kullanici_Id')['Islem_Tutari'].sum().nlargest(10)
top_users.plot(kind='bar')
plt.xlabel('Kullanıcı_ID')
plt.ylabel('İşlem Sayısı ')
plt.title("En yüksek tutarlı işlem yapan 10 kullanıcı")
plt.show()
Bu kullanıcılara yönelik şampiyon kullanıcısı ünvanı verilip çeşitli kampanyalar sağlanması yarar sağlayabilir.
#Hangi işlem tipleri en fazla ücret almıştır?
fees_by_transaction_type = data.groupby('Islem_Tipi')['İslem_Ucreti'].sum()
fees_by_transaction_type.plot(kind='bar')
plt.xlabel('İşlem_Tipi')
plt.ylabel('İşlem Sayısı ')
plt.title("Hangi işlem tipleri en fazla ücret almıştır?ı")
plt.show()
#İşlem ücretlerinin dağılımı nasıldır?#
data['İslem_Ucreti'].plot(kind='hist')
plt.xlabel('İşlem Ücretleri')
plt.ylabel(' İşlem Ücretleri Sıklığı ')
plt.title("Hİşlem ücretlerinin dağılımı nasıldır?#")
plt.show()
#Hangi tarihlerde en fazla işlem gerçekleşmiştir?
transactions_by_date = data.groupby('Islem_Tarihi')['Islem_Id'].count()
transactions_by_date.plot(kind='line')
plt.xlabel('İşlem Tarihleri')
plt.ylabel(' İşlem sayıları ')
plt.title("Hangi tarihlerde en fazla işlem gerçekleşmiştir?")
plt.show()
#İşlemler hangi saatlerde daha fazla gerçekleştirilmiştir?
df['Islem_Saati'] = df['Islem_Tarihi'].dt.hour
df['Islem_Saati'].plot(kind='hist', bins=24)
plt.xlabel('Saat')
plt.ylabel('İşlem Sayısı')
plt.title('Saatlere Göre İşlem Sayısı')
plt.show()
#İşlemler hangi saatlerde daha fazla gerçekleştirilmiştir?
df['Islem_Ayi'] = df['Islem_Tarihi'].dt.month
df['Islem_Ayi'].plot(kind='hist', bins=12)
plt.xlabel('Ay')
plt.ylabel('İşlem Sayısı')
plt.title('Aylara Göre İşlem Sayısı')
plt.show()
# mevsimleri hesapla
df["Mevsim"] = df["Islem_Tarihi"].dt.month.apply(lambda x: "Kış" if x in [12, 1, 2] else
"İlkbahar" if x in [3, 4, 5] else
"Yaz" if x in [6, 7, 8] else
"Sonbahar")
# mevsimlere göre iptal oranlarını hesapla
iptal_oranlari = df.groupby("Mevsim")["Iptal_Durum"].mean()
# yoğunluk grafiği çizdir
iptal_oranlari.plot(kind="bar")
plt.xlabel("Mevsim")
plt.ylabel("İptal Oranı")
plt.title("Mevsimlere Göre İptal Oranları")
plt.show()
# İşlem tarihlerine göre iptal oranlarını hesaplayalım
iptal_oranlari_aylar = data.groupby(data['Islem_Tarihi'].dt.month)['Iptal_Durum'].mean()
# Yoğunluk grafiği oluşturalım
import matplotlib.pyplot as plt
plt.figure(figsize=(8,6))
plt.title('Iptal Oranları Aylara Göre')
plt.xlabel('Aylar')
plt.ylabel('Iptal Oranları')
plt.hist(iptal_oranlari_aylar.index, bins=12, weights=iptal_oranlari_aylar.values)
plt.xticks(range(1,13))
plt.show()
SQL işlemi için şöyle bir kodlama yazabiliriz:
--2-Islem Tarihi alanını yıl,ay ve gün şeklinde ayıracak SQL komutunu yazınız.
SELECT DATEPART(year, Islem_Tarihi) as 'Year', DATEPART(month, Islem_Tarihi) as 'Month', DATEPART(day, Islem_Tarihi) as 'Day',
FROM ornek_data;
Input In [41] --2-Islem Tarihi alanını yıl,ay ve gün şeklinde ayıracak SQL komutunu yazınız. ^ SyntaxError: invalid syntax
df['Islem_Yili'] = df['Islem_Tarihi'].dt.year
print("5-Yıllara göre işlem bazlı büyüme oranını analiz ediniz.")
# Yıllara göre toplam işlem tutarlarını hesapla
tutarlar = df.groupby('Islem_Yili')['Islem_Tutari'].sum()
# Yıllara göre işlem bazlı büyüme oranlarını hesapla
büyüme_oranları = tutarlar.pct_change()
# İlk yılın büyüme oranını 0 olarak ayarla
büyüme_oranları.iloc[0] = 0
# Sonuçları yazdır
print(büyüme_oranları)
5-Yıllara göre işlem bazlı büyüme oranını analiz ediniz. Islem_Yili 2019 0.000000 2020 -1.643368 Name: Islem_Tutari, dtype: float64
6- Departmanlardan gelen rapor taleplerini analiz etmek için nasıl bir yol izlersiniz? (Departmanlarla iletişim kurma çerçevesinde ve talep detaylandırmayı göz önünde bulundurarak cevaplayabilirsiniz.)
Öncelikle rapor talebi hangi departmandan geldiğini belirlemek ve talebin detaylarını öğrenmek için ilgili departmanla iletişim kurmak gerekir. Talep detaylarına göre, veritabanındaki ilgili tabloları analiz etmek ve raporlama ihtiyaçlarını karşılayacak verileri çekmek gerekebilir.
Analiz yapmak için, raporlama talebinin detaylarına bağlı olarak farklı verileri kontrol etmek gerekebilir. Örneğin, finans departmanından gelen bir talep için, Islem_Tipi ve Islem_Tarihi gibi finansal veriler incelenerek bir rapor oluşturulabilir. Bu veriler, işlem tutarları, ücretleri, para birimi bilgileri gibi finansal ayrıntıları içerir.
Bir diğer örnek, pazarlama departmanından gelen bir talep için, kullanıcı tipi, kullanıcı doğum tarihi, ulke kodu gibi veriler incelenerek bir rapor oluşturulabilir. Bu veriler, hedef kitle belirleme, kampanya planlaması gibi pazarlama faaliyetleri için önemli olabilir.
Veri analizi yaparken, verilerin doğruluğundan emin olmak için doğrulama adımları atılmalıdır. Verilerin eksiksiz olduğundan ve gereksiz verilerin raporu etkilemeyeceğinden emin olunmalıdır. Ayrıca, raporlama talebinin kapsamını ve amacını anlamak için departmanla açık iletişim kurulması önemlidir.